package controllers;

import java.util.ArrayList;
import java.util.List;
import models.Qcm;
import models.Statut;
import models.Utilisateur;
import models.UtilisateurQcm;

import play.Logger;
import play.mvc.Controller;
import play.mvc.Result;

import views.html.deleteQcm.*;

import views.html.pageErreurConnexion;

public abstract class SupprimerQCM extends Controller {
	public static Result listeQCM() {
		final Utilisateur us = Utilisateur.findById(Long.parseLong(session("id")));

		if (us.getStatut().equals(Statut.Etudiant)) {
			return ok(pageErreurConnexion.render());
		}

		List<Qcm> listeMesQcm = new ArrayList<Qcm>();
		final List<Qcm> listeQcmSupp = new ArrayList<Qcm>();

		// Si c'est un expert on retourne ses qcms
		if (us.getStatut().equals(Statut.Expert)) {
			listeMesQcm = us.getListeQcmCrees();

			for (Qcm qcm : listeMesQcm) {
				if (UtilisateurQcm.findAllByIdQcm(qcm.getIdQcm()).isEmpty()) {
					listeQcmSupp.add(qcm);
				}
			}
			return ok(deleteQcm.render(listeQcmSupp));

			// Si c'est un admin on retourne tous les qcms
		} else {
			listeMesQcm = Qcm.findAll();
			for (Qcm qcm : listeMesQcm) {
				if (UtilisateurQcm.findAllByIdQcm(qcm.getIdQcm()).isEmpty()) {
					listeQcmSupp.add(qcm);
				}
			}
			return ok(deleteQcm.render(listeQcmSupp));
		}
	}

	public static Result supprimerQCM(final Long id) {
		final Qcm qcm = Qcm.findById(id);
		final StringBuilder s = new StringBuilder();
		s.append("Le QCM : " + qcm.getLibelle() + " est bien supprimé");
		Qcm.delete(id);
		Logger.debug("Suppression QCM : Id = " + qcm.getIdQcm() + " Libelle = "
				+ qcm.getLibelle() + " par user " + session().get("id"));
		return Application.redirectionAccueil(s.toString());
	}

}
